package com.hunlian.makelove.activity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.hunlian.makelove.R;
import com.hunlian.makelove.common.AppConfig;
import com.hunlian.makelove.common.DisplayUtil;
import com.hunlian.makelove.tools.ACache;
import com.tencent.stat.MtaSDkException;
import com.tencent.stat.StatConfig;
import com.tencent.stat.StatReportStrategy;
import com.tencent.stat.StatService;
import com.tencent.stat.common.StatLogger;


public class LoginRegisterActivity extends BaseActivity{

	private LoginRegisterActivity mSelf;
	private Button mBtnLogin,mBtnRegister;
	private TextView mTvFindBack;
	private static StatLogger logger = new StatLogger("MTADemon");

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mSelf = this;
		setContentView(R.layout.login_register_activity);
		startMTA();
		
		mBtnLogin = (Button) findViewById(R.id.btn_login);
		mBtnRegister = (Button) findViewById(R.id.btn_register);
		mTvFindBack = (TextView) findViewById(R.id.tv_find_back);
		setListener();

		//System.out.println("width: "+DisplayUtil.getDisplayMetrics(mSelf).widthPixels);
		DisplayUtil.px2dip(mSelf,DisplayUtil.getDisplayMetrics(mSelf).widthPixels);

		autoLogin();
	}

	/**
	 * 自动登录
	 * @author zealjiang
	 * @time 2017/2/17 14:04
	 */
	private void autoLogin(){

		//获取上次登录成功的时间
		Object objectT = ACache.get(this.getApplicationContext()).getAsObject("loginTime");
		if (objectT != null) {
			long lastLoginTime = (long) objectT;
			//如果当前时间大于上次登录时间超过3天，清空登录密码
			long day = (System.currentTimeMillis() - lastLoginTime) / 1000 / (24 * 60 * 60);
//            long day = (System.currentTimeMillis() - lastLoginTime) / 1000/60;
			if (day > 3) {
				//清空userId
				AppConfig.getInstance().clearLoginedUserId();
				//清空completed
				AppConfig.getInstance().clearCompleted();
				return;
			}
		}

		//自动登录
		String userId = AppConfig.getInstance().getLoginedUserId();
		String completed = AppConfig.getInstance().getCompleted();

		if(!TextUtils.isEmpty(completed)&&!TextUtils.isEmpty(userId)){
			String id =  completed.split("-")[0];
			if(userId.equals(id)){
				ACache.get(this.getApplicationContext()).put("loginTime", System.currentTimeMillis());
				startActivity(new Intent(mSelf,MainActivity.class));
				mSelf.finish();
				return;
			}
		}

		//如果自动登录失败，停留在此页
		//startActivity(new Intent(mSelf,LoginActivity.class));
	}

	private void startMTA(){
		// app的最初始代码处
		StatConfig.initNativeCrashReport (this, null);
		// androidManifest.xml指定本activity最先启动
		// 因此，MTA的初始化工作需要在本onCreate中进行
		// 在startStatService之前调用StatConfig配置类接口，使得MTA配置及时生效
		initMTAConfig(true);
		// 初始化并启动MTA
		// 第三方SDK必须按以下代码初始化MTA，其中appkey为规定的格式或MTA分配的代码。
		// 其它普通的app可自行选择是否调用
		try {
			// 第三个参数必须为：com.tencent.stat.common.StatConstants.VERSION
			StatService.startStatService(this, null,
					com.tencent.stat.common.StatConstants.VERSION);
		} catch (MtaSDkException e) {
			// MTA初始化失败
			logger.error("MTA start failed.");
			logger.error("e");
		}

	}
	
	private void setListener() {
		mBtnLogin.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				//autoLogin();
				//手动登录
				startActivity(new Intent(mSelf,LoginActivity.class));
			}
			
		});
		
		mBtnRegister.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(mSelf,CheckIsRegisterActivity.class);
				intent.putExtra("from", "register");
				startActivity(intent);
				overridePendingTransition(R.anim.right_in, R.anim.left_out);
			}
			
		});

		mTvFindBack.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(mSelf,CheckIsRegisterActivity.class);
				intent.putExtra("from", "forgetPassword");
				startActivity(intent);
				overridePendingTransition(R.anim.right_in, R.anim.left_out);
			}

		});
	}

	/**
	 * 根据不同的模式，建议设置的开关状态，可根据实际情况调整，仅供参考。
	 *
	 * @param isDebugMode
	 *            根据调试或发布条件，配置对应的MTA配置
	 */
	private void initMTAConfig(boolean isDebugMode) {
		logger.d("isDebugMode:" + isDebugMode);
		if (isDebugMode) { // 调试时建议设置的开关状态
			// 查看MTA日志及上报数据内容
			StatConfig.setDebugEnable(true);
			// 禁用MTA对app未处理异常的捕获，方便开发者调试时，及时获知详细错误信息。
			StatConfig.setAutoExceptionCaught(false);
			// StatConfig.setEnableSmartReporting(false);
			// Thread.setDefaultUncaughtExceptionHandler(new
			// UncaughtExceptionHandler() {
			//
			// @Override
			// public void uncaughtException(Thread thread, Throwable ex) {
			// logger.error("setDefaultUncaughtExceptionHandler");
			// }
			// });
			// 调试时，使用实时发送
			// StatConfig.setStatSendStrategy(StatReportStrategy.BATCH);
			// // 是否按顺序上报
			// StatConfig.setReportEventsByOrder(false);
			// // 缓存在内存的buffer日志数量,达到这个数量时会被写入db
			// StatConfig.setNumEventsCachedInMemory(30);
			// // 缓存在内存的buffer定期写入的周期
			// StatConfig.setFlushDBSpaceMS(10 * 1000);
			// // 如果用户退出后台，记得调用以下接口，将buffer写入db
			// StatService.flushDataToDB(getApplicationContext());

			// StatConfig.setEnableSmartReporting(false);
			// StatConfig.setSendPeriodMinutes(1);
			// StatConfig.setStatSendStrategy(StatReportStrategy.PERIOD);
		} else { // 发布时，建议设置的开关状态，请确保以下开关是否设置合理
			// 禁止MTA打印日志
			StatConfig.setDebugEnable(false);
			// 根据情况，决定是否开启MTA对app未处理异常的捕获
			StatConfig.setAutoExceptionCaught(true);
			// 选择默认的上报策略
			StatConfig.setStatSendStrategy(StatReportStrategy.APP_LAUNCH);
		}
	}

	@Override
	protected void onResume() {
		super.onResume();
	}

	@Override
	protected void onPause() {
		super.onPause();
	}
	
}
